#include "widget.h"

#include <QDebug>  //打印
#include <QPushButton>

Widget::Widget(QWidget *parent) : QWidget(parent) {
  b1.setParent(this);
  b1.setText("^_^");
  b1.move(100, 100);

  b2 = new QPushButton(this);
  b2->setText("abc");

  //  connect(&b1, &QPushButton::pressed, this, &Widget::close);

  connect(b2, &QPushButton::released, this, &Widget::mySlot);

  //  connect(b2, &QPushButton::released, &b1, &QPushButton::hide);

  connect(&b3, &QPushButton::released, this, &Widget::changeWin);

  //  w.show();

  setWindowTitle("boss");  //当前窗口名为boss
  b3.setParent(
      this);  // this表示指定当前窗口为b3按钮的父窗口，即b3按钮在boss窗口上而不是独立出去
  b3.setText("切换到子窗口");  // b3按钮的内容
  b3.move(50, 50);             // b3按钮在boss窗口上的位置

  //处理子窗口的信号
  //  connect(&w, &SubWidget::mySignal, this, &Widget::dealSub);

  void (SubWidget::*funSignal)() = &SubWidget::mySignal;
  connect(&w, funSignal, this, &Widget::dealSub);
  void (SubWidget::*testSignal)(int, QString) = &SubWidget::mySignal;
  connect(&w, testSignal, this, &Widget::dealSlot);

  QPushButton *b4 = new QPushButton(this);
  b4->setText("Lambda表达式");
  b4->move(150, 150);
  connect(b4, &QPushButton::released, [=]() { qDebug() << "11111"; });

  resize(400, 300);  //定义窗口大小
}

void Widget::mySlot() { b2->setText("123"); }

void Widget::changeWin() {
  //子窗口显示，本窗口隐藏
  w.show();
  this->hide();
}

void Widget::dealSub() {
  //子窗口隐藏，主窗口显示
  w.hide();
  show();
}

//实现槽函数
void Widget::dealSlot(int a, QString str) { qDebug() << a << str; }

Widget::~Widget() {}
